iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0

如果你的測試環境只有 10 筆資料,AI 寫出來的 Database Query 看起來蒸蚌。但這就是 AI 最陰險的地方。AI 根本不懂什麼叫「規模(Scale)」與「邊界(Boundary)」。它寫出來的 ORM 查詢,大概不會幫你加上 Pagination(分頁)限制。一上 Production,面對幾百萬筆使用者的資料,AI 那句 db.query_all() 就像在機房裡丟了一顆核彈,直接把 RAM 瞬間撐爆,引發 Out of Memory 慘案 。

對付 AI 這種無腦的資源浪費,不能只靠 Code Review,因為 .all() 在語法上完全合法,人眼極度容易漏看。我們必須在架構底層與 CI 雙管齊下

class SafeQuery(Query):
    def all(self):
        # 抓出沒有下 limit 就敢 call all() 的 Code
        if self._limit is None:
            raise UnboundedQueryException(
                "禁止使用未限制的無腦 .all(),請使用分頁 (Pagination) 或 .yield_per()"
            )
        return super().all()

另外,用 Linter 查殺無分頁的 API,在 CI 階段,透過 AST 分析,找出那些回傳 list 但卻沒有接受 skip 或 limit 參數的 API Endpoint,強制作為 Code Smell 打回票。


上一篇
AI 最愛把密碼跟 Token 寫死在 Code 裡
下一篇
等一下,怎麼會出現 17.1 元
系列文
拒絕通靈測試與 AI 垃圾:SDET 的 30 天自動化防禦工事9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言